home *** CD-ROM | disk | FTP | other *** search
/ Input 64 / Input_64_86-07_1986_Verlag_Heinz_Weise_de.d64 / mps801 druck.s < prev    next >
Text File  |  2023-02-26  |  4KB  |  166 lines

  1. ;
  2. ;deutsche umlaute fuer mps801
  3. ;und kompatible von w.fahl
  4. ;(c) input64 1986
  5. ;geschrieben auf input-ass (6/86)
  6. ;_
  7. ;flag unten mit 1 oder 0 versorgen
  8. ;je nach gewuenschter adresslage
  9. ;des lauffaehigen codes
  10. ;_
  11. ;definitionen und systemadressen
  12. :unten    = 1          ;switch adresslage
  13. :drucker  = $04        ;ausgabegeraet
  14. :device   = $9a        ;geraetenummer
  15. :bsoutvek = $0326      ;ausgabevektor
  16. :bsout    = $f1ca      ;ausgaberoutine
  17. ;
  18.  
  19. ;_
  20. ;basic-zeile
  21. ;
  22. org $0801              ;  basic-anfang
  23. w opcode               ;link-adress
  24. w 1986                 ;zeilen-nummer
  25. b $9e                  ;sys-token
  26. b "2090:"              ;sys-adresse
  27. b $8f                  ;rem-token
  28. b "druckertreiber sys" ;kommentar
  29.  
  30. ;_
  31. ;je nach adresslage
  32. ;aufrufadresse aendern
  33. if unten
  34. b "00828"
  35. el
  36. b "53000"
  37. ei
  38. :opcode b 0,0,0        ;basic-zeilen ende
  39. ;_
  40. s 2090-*               ;code auf adr 2090
  41. ;verschieberoutine fuer 1 block
  42. :begin  ldx #00        ;zaehler auf null
  43. :opclop lda dest,x     ;code holen und
  44.         sta sorc,x     ;ans ziel schreiben
  45.         inx            ;zaehler hoch
  46.         cpx #ende-sorc ;schon alle?
  47.         bne opclop     ;wenn nicht, weiter
  48.         jmp sorc       ;treiber initialisieren
  49. :dest = *              ;code-lage
  50. ;_
  51. ;code-adresse nach flags assemblieren
  52. if unten
  53. org $033c              ;real code cass-puff
  54. el
  55. org $cf08              ;real code begin
  56. ei
  57. ;_
  58. ;initializierung des treibers
  59. ;
  60. :sorc   sei            ;interrupt sperren
  61.         lda #>newbsout ;ausgabe-
  62.         sta bsoutvek+1 ;vektor
  63.         lda #<newbsout ;auf neue
  64.         sta bsoutvek   ;routine
  65.         cli            ;interrupt freigeben
  66.         rts            ;retour to basic
  67. ;_
  68. ;daten
  69. :temp   b $00          ;speicher fuer zeichen
  70. ;
  71. ;ascii-codes der umlaute
  72. :umlauttab b $22,$5b,$5c,$5d
  73.         b $7b,$7c,$7d,$7e
  74. ;
  75. ;tabelle der benoetigten grafik-zeichen
  76. ;
  77. :grafiktab
  78. ;anfuehrungszeichen im graphic-mode
  79.         b 08
  80.         b %10000000, %10000111, %10000000
  81.         b %10000111, %10000000, %10000000
  82.         b 0
  83. ;grosses ae im graphic-mode
  84.         b 08
  85.         b %11111100, %10010011, %10010010
  86.         b %10010011, %11111100, %10000000
  87.         b 0
  88. ;grosses oe im graphic-mode
  89.         b 08
  90.         b %10111100, %11000011, %11000010
  91.         b %11000011, %10111100, %10000000
  92.         b 0
  93. ;grosses ue im graphic-mode
  94.         b 08
  95.         b %10111110, %11000001, %11000000
  96.         b %11000001, %10111110, %10000000
  97.         b 0
  98. ;kleines ae im graphic-mode
  99.         b 08
  100.         b %10100000, %11010101, %11010100
  101.         b %10111101, %11000000, %10000000
  102.         b 0
  103. ;kleines oe im graphic-mode
  104.         b 08
  105.         b %10111000, %11000101, %11000100
  106.         b %11000101, %10111000, %10000000
  107.         b 0
  108. ;kleines ue im graphic-mode
  109.         b 08
  110.         b %10111101, %11000000, %11000000
  111.         b %10111101, %11000000, %10000000
  112.         b 0
  113. ;sz (eszet!) im graphic-mode
  114.         b 08
  115.         b %11111110, %10100101, %10100101
  116.         b %10101010, %10010000, %10000000
  117.         b 0
  118. ;_
  119. ;neue ausgabe-routine
  120. ;
  121. :newbsout sta temp     ;zeichen retten
  122.         lda device     ;test ob ausgabe
  123.         cmp #drucker   ;auf drucker
  124.         beq treiber    ;wenn ja => treiber
  125. ;
  126. :back   lda temp       ;zeichen
  127.         jmp bsout      ;ausgeben
  128. ;
  129. :treiber tya           ;register retten
  130.         pha
  131.         txa
  132.         pha
  133.         ldy #7         ;anzahl der umlaute -1
  134.         lda temp       ;test ob zeichen
  135. :testlp cmp umlauttab,y;umlaut
  136.         beq found      ;=> found
  137. ;
  138.         dey            ;naechster
  139.         bpl testlp     ;umlaut
  140. ;
  141. :back0  pla            ;register
  142.         tax            ;wiederherstellen
  143.         pla
  144.         tay
  145.         clc
  146.         bcc back       ;normal ausgeben
  147. ;
  148. :found  tya            ;nr. des zeichens nach a
  149.         asl            ;mit 8 multipliziert
  150.         asl            ;ergibt position in der
  151.         asl            ;tabelle
  152.         tay
  153.         ldx #7         ;grafik ein und
  154. :graflp lda grafiktab,y;sieben grafik-
  155.         jsr bsout      ;zeichen ausgeben
  156.         iny
  157.         dex            ;naechstes
  158.         bne graflp     ;zeichen
  159. ;
  160.         lda #15        ;grafik-modus aus
  161.         sta temp       ;als letztes
  162.         bne back0      ;zeichen
  163. ;
  164. :ende = *+1            ;dummy fuers verschieben
  165.  
  166.  
  167.